// 解构赋值
// const { id, name, price } = product

type Product = {
  id: string
  pname: string
  price: number
}

const product: Product = {
  id: '1',
  pname: 'phone',
  price: 2888,
}

const { id, pname, price }: Product = product

// 结构类型原则
type A = {
  x: number
}

type B = {
  x: number
  y: number
}

// 对象B 兼容 对象A

const b: B = {
  x: 1,
  y: 1,
}

const a: A = b

// 类型 B 可以赋值给类型 A
// TypeScript 就认为 B 是 A 的子类型（subtyping）
// 多的给少的 就是能兼容 因为更加强大了  类似于浏览器的兼容性

type MyObj = {
  x: number
  y: number
}

type MyObj2 = {
  x: number
  y: number
  z: number
}

function getSum(obj: MyObj) {
  return Math.abs(obj.x) + Math.abs(obj.y)
}

let c: MyObj2 = {
  x: 1,
  y: 2,
  z: 3
}

const res = getSum(c)
console.log(res)
